非Orgnizations環境のAWSアカウントからSAML認証を使ってAmazon Managed Grafanaをセットアップしてみる
はじめに
こんにちは。大阪オフィスの林です。
前回下記のエントリにてAmazon Managed Grafanaのセットアップを検証していきました。
前回のエントリでは認証方法のパラメータにAWS SSO
を指定し、AWS SSO
と統合しながらAmazon Managed Grafanaを利用しました。Amazon Managed Grafanaの認証方法ではAWS SSO
の他にSAML認証
もサポートしています。Amazon Managed Grafanaのプレビュー期間中は、認証方法がAWS SSO
のみだったので、Organizations環境が必須というイメージを持っていましたが、GAまでの間でSAML認証の機能が追加された模様です。これによって非Orgnizations環境のAWSアカウントでもAmazon Managed Grafanaの利用ができますので、ひとつ大きな制約がなくなったといえるのではないでしょうか。
今回のエントリでは非Orgnizations環境のAWSアカウントでAzure ActiveDirectoryをIDプロバイダーとし、SAML認証
を使ってAmazon Managed Grafanaを利用するところまでを見ていきたいと思います。
なお執筆時点では、次の外部IDプロバイダーのSAML認証がAmazonManaged Grafanaでテストされているようです。
- Azure Active Directory
- CyberArk
- Okta
- OneLogin
- Ping Identity
それぞれのIDプロバイダーでの設定方法は下記を参考にして頂ければと思います。
やってみた
Amazon Managed Grafanaワークスペース作成
Amazon Managed Grafanaのダッシュボードに移動し、「ワークスペースを作成」を選択します。
SAMLを選択します。また、今回の検証では自動で作成されるIAM Roleを使うため「サービスマネージド」を選択し「次へ」を選択します。独自に作成したIAM Roleを指定する場合は「カスタマーマネージド」を選択してください。
執筆時点ではYour account is not member of an organization.
というメッセージ表示されましたが、ドキュメントを読む限り、SAML認証選択時の前提条件にAWS Organizations環境が必須である旨の記載は見当たりませんので、今回の検証ではとりあえずこのまま進めてみます。(結論、このメッセージは無視して問題ありません)
「現在のアカウント」を指定し、任意のデータソースを指定します。検証ではデータソースに「Amazon Cloudwatch」を選択しています。
ステータスが「アクティブ」になったことを確認し、「セットアップを完了にする」を選択します。
「ステップ 1: IDP を設定する」の以下3つのURLは、以降のIDプロバイダー(Azure Active Directory)側の設定で必要になりますのでコピーもしくはブラウザを表示したままとしてください。
- サービスプロバイダー識別子 (エンティティ ID)
- サービスプロバイダーの応答 URL (Assertion Consumer Service URL)
- サービスプロバイダーのログイン URL
IDプロバイダー(Azure Active Directory)側の作業
続いて、IDプロバイダー側の作業を進めていきます。今回の検証ではIDプロバイダーにAzure Active Directoryを使用しますので、Azureの管理画面にログインし「Azure Active Directory」を選択します。
左メニューから「エンタープライズアプリケーション」を選択します。
Amazon Managed Grafana
を検索し選択します。
先ほどコピーもしくはブラウザを表示したままとしているAmazon Managed Grafanaワークスペースの情報をコピーしていきます。
識別子
にサービスプロバイダー識別子 (エンティティ ID)
、応答 URL (Assertion Consumer Service URL)
にサービスプロバイダーの応答 URL (Assertion Consumer Service URL)
、サインオン URL
にサービスプロバイダーのログイン URL
を入力し、「保存」を選択します。
テストが求められますが、またユーザーをアタッチしていないので「いいえ、後でtestします」を選択します。
後程Amazon Managed Grafanaワークスペースの設定で使用するため「SAML署名証明書」から「アプリのフェデレーションメタデータURL」をコピーしておきます。
左メニューから「ユーザーとグループ」を選択し「ユーザーまたはグループの追加」を選択します。予めAzure Active Directoryにはユーザーを作成しておく必要があります。
アプリケーションにユーザーがアタッチされたことを確認します。
Amazon Managed Grafana側の作業に戻る
再びAmazon Managed Grafanaワークスペースの設定に戻り、IDプロバイダー側の設定手順の中でコピーしておいた「アプリのフェデレーションメタデータURL」を「メタデータURL」に張り付けます。
SAML認証の場合、IDプロバイダー側のユーザーに設定されたユーザー属性を指定することでGrafanaに対しての管理者権限を与えることが出来ます。ひとまずSAML連携が正しく出来ていて、正常にログインが出来るかどうかの確認を進めますので、ここでは「アサーション属性ロール」および「管理者ロールの値」には適当な値を入力し「SAML設定を保存」を選択します。本エントリ後半で管理者権限を与えたログインの手順を記載します。
設定が正常に登録され、SAMLのステータスが「有効」であることを確認し、Grafana ワークスペース URLにアクセスします。
ログイン画面が表示されるので「Sign in with SAML」を選択します。
IDプロバイダー側のアプリケーションにアタッチしたユーザーでサインインします。
管理者権限でAmazon Managed Grafanaにログインする
繰り返しになりますが、SAML認証の場合、IDプロバイダー側のユーザーに設定されたユーザー属性を指定することで、そのユーザー属性を持つユーザーに対して、Grafanaに対しての管理者権限を与えることが出来ます。それでは、検証用にユーザー属性を付与していきます。Azureの設定にて作成したAmazon Managed Grafanaのエンタープライズアプリケーション内の設定から「シングルサインオン」を選択し「ユーザー属性とクレーム」の「編集」を選択します。
今回の検証では、名前に「checkmail」として、ソースは「属性」のままで、ソース属性に「user.mail」を指定し、「保存」を選択します。
再びAmazon Managed Grafanaワークスペースの設定に戻り「SAMLの設定」を選択する。
「アサーション属性をマッピングする」にて、アサーション属性ロールに「checkmail」を入力し、管理者ロールの値にユーザーのメールアドレスを指定し「SAML設定を保存」を選択します。この設定を行うことによって、「checkmail」という属性に、指定したメールアドレスを持つユーザーがGrafanaに管理者権限でログインすることが出来るようになります。このあたりの設定は環境や要件に応じて適宜変更してください。
管理者権限でログインできるか確認します。既にGrafanaにログインしている場合は一度ログアウト後、再度同じユーザーでGrafana ワークスペース URLにアクセスします。
左メニューに歯車マークなどのメニューが表示されていれば、管理者権限でログインできています。
まとめ
SAML認証でもAmazon Managed Grafanaを簡単に使い始めることが出来ました。Amazon Managed Grafanaのプレビュー期間中はAWS SSOのみの認証だったようなので、Organizations環境が必須というイメージを持っていましたが、SAML連携に対応してくれたことによって非Organizations環境でもAmazon Managed Grafanaを使えるようになってたという嬉しい機能追加でした。
以上、大阪オフィスの林がお送りしました!